1. Technical Field
The present invention relates to the field of computer systems. In one aspect, the present invention relates to computer software agents with introspection that manage computer software plugins, and that can be used in connection with other computer programs.
2. Description of Related Art
In computer network applications, particularly telecommunication networks (e.g., the Internet), it is common for an application running at a particular computer to interact with or use another application that may be located at the same computer or at a different computer connected to the network. In addition, technology in the computer area is subject to rapid change, both in the hardware and software technologies that are continually introduced. As a consequence, computer applications in a network environment are often faced with changes in the network environment, whether they be changes in software applications used by a program or changes in hardware (including changing the machines or connections used to run services in the network environment). The challenge of adapting to new technologies resides not only with the end user or client side, but also with the network service provider. For example, an Internet Service Provider (“ISP”) experiences changes in the hardware and software technologies that must be supported, in the expectations of the subscribers, and in the need for service enhancements to respond to competitive pressures.
Generally speaking, computer software products that require modification or extension after the software products are up and running on a client system (for example, within a client/server environment) are typically extended using a plugin module that interfaces the client system wherein the software product is resident. The client system must recognize and install the appropriate plugin to complete a software extension and must interface both the plugin module and the software product. The responsibility for all knowledge of how to verify the appropriateness of the use of a specific plugin module (due to version changes, procedural interface changes, functional changes, etc.) resides both in the host computer system as well as all related modules that expect to use the plugin module.
This base of information grows exponentially as plugin modules are added and evolve over the life cycle of the software product. Indeed, sweeping upgrades to existing modules may be required each time a new individual plugin is defined. For example, in conventional client/server based systems, the management of distributed state information for the system requires storage of per-client state information at the service end so that services can rely on certain facts about the client state. Such a server would need to store overhead information about the particular programs and versions available at a client to permit proper interaction between the server and client. Hence, the conventional system for implementing extension creates the significant problem of an ever-growing base of information that is required to maintain compatibility. In conventional systems, each new software extension, or “plugin” module, creates a new set of module interdependencies that must be maintained in all modules that expect to use the newly created plugin. Furthermore, the controlling system must contain all information about the management of the plugin prior to actually loading it and providing its services to the software system. In addition, with conventional plugin modules, user intervention is typically required to effectuate software extension.
Further limitations and disadvantages of conventional systems will become apparent to one of skill in the art after reviewing the remainder of the present application with reference to the drawings and detailed description which follow.